package comp

// Iobject 接口，表示一个对象
type Iobject interface {
	// 获取对象的名字
	GetObjName() string
	// 获取对象的属性值
	GetAttr(attrname string) int64
}

// IAttr 接口，表示一个具有属性的对象
type IAttr interface {
	// 获取属性值
	GetAttr(attrname string) int64
}

// 创建一个新的 ObjectAttr 对象
// name: 对象的名字
// obj: 实现 IAttr 接口的对象
func NewObjectAttr(name string, obj IAttr) Iobject {
	result := new(ObjectAttr)
	result.name = name
	result.IAttr = obj
	return result
}

// ObjectAttr 类型，表示一个带有名字的对象
type ObjectAttr struct {
	name  string // 对象的名字
	IAttr        // 嵌入的 IAttr 接口
}

// 获取对象的名字
func (obj *ObjectAttr) GetObjName() string {
	return obj.name
}
